package com.cleaningcloud.cld.service;

import com.cleaningcloud.cld.domain.CldWorkplan;
import com.cleaningcloud.cld.domain.dto.CldWorkplanDto;
import com.cleaningcloud.cld.domain.dto.CldWorkplanSubmitDto;
import com.cleaningcloud.cld.domain.vo.CldWorkplanVo;

import java.util.List;
import java.util.Map;

/**
 * 工作计划Service接口
 *
 * @author cleaningcloud
 * @date 2024-10-17
 */
public interface ICldWorkplanService {
    /**
     * 查询工作计划
     *
     * @param workplanId 工作计划主键
     * @return 工作计划
     */
    CldWorkplanVo selectCldWorkplanByWorkplanId(Long workplanId);

    /**
     * 查询工作计划列表
     *
     * @param cldWorkplan 工作计划
     * @return 工作计划集合
     */
    List<CldWorkplanVo> selectCldWorkplanList(CldWorkplanDto cldWorkplan);


    /**
     * 工作计划按项目分组统计
     *
     * @param cldWorkplanDto
     * @return
     */
    List<Map<String, Object>> selectCldWorkplanGroupProjectList(CldWorkplanDto cldWorkplanDto);

    /**
     * 新增工作计划
     *
     * @param cldWorkplan 工作计划
     * @return 结果
     */
    int insertCldWorkplan(CldWorkplanDto cldWorkplan);

    /**
     * 修改工作计划
     *
     * @param cldWorkplan 工作计划
     * @return 结果
     */
    int updateCldWorkplan(CldWorkplanDto cldWorkplan);

    /**
     * 审批工作计划
     *
     * @param cldWorkplan
     * @return
     */
    int auditCldWorkplanSubmit( CldWorkplanSubmitDto cldWorkplanSubmitDto);

    /**
     * 批量删除工作计划
     *
     * @param workplanIds 需要删除的工作计划主键集合
     * @return 结果
     */
    int deleteCldWorkplanByWorkplanIds(Long[] workplanIds);

    /**
     * 删除工作计划信息
     *
     * @param workplanId 工作计划主键
     * @return 结果
     */
    int deleteCldWorkplanByWorkplanId(Long workplanId);
}
